package com.itgaoshu.hospitalproject.mapper;

import com.itgaoshu.hospitalproject.bean.DataGridView;
import com.itgaoshu.hospitalproject.bean.Role;
import com.itgaoshu.hospitalproject.bean.User;
import com.itgaoshu.hospitalproject.bean.UserRole;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface UserMapper{
    //主菜单中根据用户id来查询个人资料左上角的信息
    @Select("select * from sys_user where userid=#{userid}")
    User toUpdateLogin(User user);

    //在主菜单中个人资料进行修改用户信息根据id来修改
    @Update("update sys_user set realname=#{realname},identity=#{identity},address=#{address},phone=#{phone},sex=#{sex} where userid = #{userid}")
    int editLogin(User user);

    //在主菜单的个人资料中进行修改密码以及修改盐值
    @Update("update sys_user set pwd=#{pwd},salt=#{salt} where loginname=#{loginname}")
    int editPwd(User user);

    //模糊查询全部用户的方法
    List<User> selectAllUser(User user);

    //修改用户信息的方法
    int updateUser(User user);

    //检查是否存在相同用户名的方法
    @Select("select count(*) from sys_user where loginname=#{loginname}")
    int checkUser(User user);

    //添加新用户的方法
    @Insert("insert into sys_user(loginname,identity,realname,sex,address,phone,pwd,position,type,available,salt)values(#{loginname},#{identity},#{realname},#{sex},#{address},#{phone},#{pwd},#{position},#{type},#{available},#{salt})")
    int addUser(User user);

    //根据用户id删除用户的方法
    @Delete("delete from sys_user where userid=#{userid}")
    int deleteUser(int userid);

    //重置用户密码的方法
    @Update("update sys_user set pwd=#{pwd},salt=#{salt} where userid=#{userid}")
    int resetUserPwd(User user);

    //查询所有角色
    @Select("select*from sys_role where available=1")
    List<Role> queryAllRole();

    //按照用户id查询角色
    @Select("select t1.* from sys_role t1 inner join sys_role_user t2 on t1.roleid=t2.rid where t2.uid=#{uid} and t1.available=1")
    List<Role> queryRoleById(int uid);

    //初始化用户角色的方法
    DataGridView queryUserRole(int userid);

    //删除用户角色
    @Insert("delete from sys_role_user where uid=#{userid}")
    int deleteRoleUser(int userid);

    //保存用户和角色
    @Insert("insert into sys_role_user(uid,rid) values(#{uid},#{rid})")
    void insertUserRole(@Param("uid")Integer userid, @Param("rid")Integer rid);

    //保存用户和角色的关系
    void saveUserRole(UserRole userRole);
}
